var preDivMenu = "divMenu";  //prefijo para el id de los divs de menu
var preDivGrupo = "divGrupo";    //prefijo para el id de los divs de grupo
var preTdGrupo = "tdGrupo";    //prefijo para el id de los tds de grupo

//objeto para concatenar string con mejor performance
function StringBuffer() 
{ 
   this.buffer = []; 
} 

StringBuffer.prototype.append = function append(string) 
{ 
   this.buffer.push(string); 
   return this; 
}; 

StringBuffer.prototype.toString = function toString() 
{ 
   return this.buffer.join(""); 
}; 
	
var sb = new StringBuffer();
//retorna un string con el html del menu
function CrearMenu()
{
    sb.append("<div id=\"divGrupos\">");
    ArmarGrupos(g);
    sb.append("</div>");
    return sb.toString();
}

var IdGrupoGeneral = 0;
function ArmarGrupos(grupos)
{
    for(var x=0;x<grupos.length;x++)
    {   
        var grupo = grupos[x];
        if (x==0)
        {
            IdGrupoGeneral = grupo[0];
            sb.append("<table class='pg' cellspacing='0' cellpadding='0' border='0' style='border-collapse: collapse;'>");
            sb.append("<tr><td class='tg1'>" + grupo[1] + "</td></tr></table>");
            sb.append("<div id='" + preDivGrupo + grupo[0] + "' >");
            ArmarMenues(grupo[0],grupo[2],1);
            sb.append("</div>");
        }        
        else
        {
            sb.append("<table border='0' cellpadding='0' cellspacing='0'><tr><td height='10' align='left' bgcolor='#FFFFFF'>&nbsp;</td></tr></table>");
            sb.append("<table width='150' border='0' cellpadding='0' cellspacing='0'><tr><td height='21' id='" + preTdGrupo + grupo[0] + "' class='bkSm'>");
            sb.append("<a href=\"javascript: VerGru(" + grupo[0] + ")\" class='menuE'>" + grupo[1] + "</a></td></tr></table>");
            sb.append("<div id='" + preDivGrupo + grupo[0] + "' class='oculto'>");
            ArmarMenues(grupo[0],grupo[2],1);
            sb.append("</div>");        
        }
    }
}

function ArmarMenues(idGrupo, menues,n)
{   

    var esGrupoGeneral = idGrupo == IdGrupoGeneral;
    var s = "";
    if (n>1)
    {
        for(var y=1;y<n;y++)
            s += "S";
    }
    for(var x=0;x<menues.length;x++)
    {   
        var f = "";
        var menu = menues[x];
        //determinar funcion
        if (menu[2]!=null)
            f = "VerMen(" + idGrupo + "," + menu[0] + "," + (n==1) + ")";
        else
            f = "VerGon(" + idGrupo + "," + menu[0] + "); PageTrackerValidarSetVar('" + menu[1] + "');";
            
        var c = "";
        if (esGrupoGeneral)
            c = "t" + s + "M";
        else
        {
           if (n==1)
                c = "menutitle2";
            else if (n==2)
                c = "menutitle5";
            else if (n==3)
                c = "menutitle6";
            else
                c = "menutitle7";
        }
            
        //abrir tabla
        sb.append("<table " + (esGrupoGeneral ? "class='" + c + "'" : "") + " cellspacing='0' cellpadding='0' border='0' style='border-collapse: collapse;'>" +
            "<tr><td><a href=\"javascript:" + f + "\"" + (!esGrupoGeneral ? "class='" + c + "'" : "")  + " target=\"_self\" >" + menu[1] + "</a>");
        //armar menu de sus hijos
        if (menu[2]!=null)
        {
            sb.append("<div id='" + preDivMenu + menu[0] + "' class='oculto'>");
            ArmarMenues(idGrupo,menu[2],n+1);
            sb.append("</div>");
        }
        //cerrar tabla
        sb.append("</td></tr></table>");
    }
}

//mostrar grupo
function VerGru(idGrupo)
{
    var div = document.getElementById(preDivGrupo + idGrupo);    
    if (div.className == 'visible')
        OcuGru(div);
	else
	{
        //dejar visible solo el primer nivel
        var divs = div.getElementsByTagName("div");
        OcuDivs(divs);

	    //abrir grupo
        document.getElementById(preTdGrupo + idGrupo).className = 'bkSmON';
	    div.className = 'visible';

        //ocultar otros grupos
        OcuGrupos(div);
	}
}

//oculta otros grupos distintos del recibido por parametro
function OcuGrupos(divGrupo)
{
    for(var i=0; i<g.length; i++)
    {
        var grupo = g[i];
            var div = document.getElementById(preDivGrupo + grupo[0]);
            if (div.id.indexOf(preDivGrupo)>-1 && div.className != 'oculto' && div.id != divGrupo.id )
                //es un grupo y no esta oculto y es distinto el que se hizo visible
                OcuGru(div);
    }
}

//ocultar grupo
function OcuGru(divGrupo)
{
    if (divGrupo.id != preDivGrupo + IdGrupoGeneral)
    {
        //no es el grupo general
        var td = document.getElementById(preTdGrupo + divGrupo.id.substring(++preDivMenu.length));     
        td.className = 'bkSm';
        divGrupo.className = 'oculto';
    }
}

//ocultar nivel
function OcuDivs(divs)
{
    for (var i=0; i<divs.length; i++)
    {
        var div = divs.item(i);		   		    
        if (div.className != 'oculto' && div.id.indexOf(preDivMenu)>-1)
            div.className = 'oculto';
    }
}


//mostrar menu
function VerMen(idGrupo, idMenu,pn)
{
    var divGrupo = document.getElementById(preDivGrupo + idGrupo);    
    OcuGrupos(divGrupo);

    var menu = document.getElementById(preDivMenu + idMenu);    

    if (menu.className == 'visible')
    {
        //ocultar un nodo
	    menu.className = 'oculto';
	}
	else
	{
	    //ver un nodo
        //ocultar otros nodos
        var divs;
		if (pn)
		{
		    //es primer nivel
            var master = menu.parentNode.parentNode.parentNode.parentNode.parentNode;
            //buscar entre los hermanos del seleccionado el que esta visible y ocultarlo

            for (var i=0; i<master.childNodes.length; i++)
            {
                var obj2 = master.childNodes[i].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1];
                if (obj2 != null && obj2.className != 'oculto' )
                {
                    //ocultar el hermano visible
                    obj2.className = 'oculto';
                    break;
                }
            }
            
            //asignar divs hijos del seleccionado
	        divs = master.getElementsByTagName("div");
		}
		else
		{
		    //no es primer nivel, buscar el nodo padre del actual
            var padre = menu.parentNode.parentNode.parentNode.parentNode.parentNode;
            //buscar entre los hermanos del seleccionado el que esta visible y ocultarlo
            for (var i=0; i<padre.childNodes.length; i++)
            {
                var obj2 = padre.childNodes[i].childNodes[0].childNodes[1];
                if (obj2 != null && obj2.className != 'oculto')
                {
                    //ocultar el hermano visible
                    obj2.className = 'oculto';
                    break;
                }
            }
            //asignar divs hijos del seleccionado
            divs = padre.getElementsByTagName("div");
		}
		//ocultar divs hijos del seleccionado para ver solo el primer nivel
		OcuDivs(divs);

		//hacer visible el nodo seleccionado
		menu.className = 'visible';
    }
}

function VerGon(idGrupo, idMenu)
{
    var divGrupo = document.getElementById(preDivGrupo + idGrupo);    
    if(typeof(divGrupo)!== 'undefined' && divGrupo!= null){
        OcuGrupos(divGrupo);
    }
        
    MostrarGondola(idMenu, function()
    {
        MostrarBannersPublicidadGondola(idMenu);
    });
    
}
